package org.springframework.social.tumblr.api.impl;
import org.springframework.social.tumblr.api.*;
import org.springframework.social.tumblr.api.impl.json.TumblrResponse;
import org.springframework.social.tumblr.api.impl.json.UserInfoResponse;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
public class UserTemplate extends AbstractTumblrOperations implements UserOperations {
public UserTemplate(RestTemplate restTemplate, boolean isAuthorized, String apiKey) {
super(restTemplate, isAuthorized, apiKey);
}
public UserInfo info() {
requireAuthorization();
return getRestTemplate().getForObject(buildUri("user/info"), UserInfoResponse.class).getUser();
}
public Posts dashboard() {
return dashboard(new PostsQuery());
}
public Posts dashboard(PostsQuery query) {
requireAuthorization();
if (query == null) {
query = new PostsQuery();
}
return getRestTemplate().getForObject(buildUri("user/dashboard", query.toParameterMap()).toString(), Posts.class);
}
public Likes likes() {
return likes(0, 20);
}
public Likes likes(int offset, int limit) {
requireAuthorization();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<String, Object>();
params.add("offset", Integer.toString(offset));
params.add("limit", Integer.toString(limit));
return getRestTemplate().getForObject(buildUri("user/likes").toString(), Likes.class, params);
}
public Following following() {
return following(0, 20);
}
public Following following(int offset, int limit) {
requireAuthorization();
return getRestTemplate().getForObject(buildUri("user/following"), Following.class);
}
public void follow(String blogUrl) {
if (blogUrl == null) {
throw new IllegalArgumentException("blogUrl must not be null");
}
requireAuthorization();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("url", blogUrl);
// should either error or not
getRestTemplate().postForObject(buildUri("user/follow"), map, TumblrResponse.class);
}
public void unfollow(String blogUrl) {
if (blogUrl == null) {
throw new IllegalArgumentException("blogUrl must not be null");
}
requireAuthorization();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("url", blogUrl);
// should either error or not
getRestTemplate().postForObject(buildUri("user/unfollow"), map, TumblrResponse.class);
}
public void like(long id, String reblogKey) {
if (reblogKey == null) {
throw new IllegalArgumentException("reblogKey must not be null");
}
requireAuthorization();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("id", Long.toString(id));
map.add("reblog_key", reblogKey);
// should either error or not
getRestTemplate().postForObject(buildUri("user/like"), map, TumblrResponse.class);
}
public void unlike(long id, String reblogKey) {
if (reblogKey == null) {
throw new IllegalArgumentException("reblogKey must not be null");
}
requireAuthorization();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("id", Long.toString(id));
map.add("reblog_key", reblogKey);
// should either error or not
getRestTemplate().postForObject(buildUri("user/unlike"), map, TumblrResponse.class);
}
}